package com.rainbow.idempotent.request;

import lombok.Builder;
import lombok.Data;

import java.util.concurrent.TimeUnit;

import com.rainbow.idempotent.enums.IdempotentStorageTypeEnum;
import com.rainbow.idempotent.storage.IdempotentStorage;

@Data
@Builder
public class IdempotentRequest {

    /**
     * 幂等Key
     */
    private String key;

    /**
     * 锁的过期时间
     */
    private int lockExpireTime;
    
    /**
     * 幂等记录存储过期时间
     */
    private int storeExpireTime;

    /**
     * 存储时间单位
     */
    private TimeUnit timeUnit;
    
    /**
     * 幂等的记录存储方案
     * 可以选择存储在redis中，mysql中，或者自定义
     */
    private IdempotentStorageTypeEnum idempotentStorageTypeEnum;
    
    /**
     * 自定义幂等的记录存储方案实现
     */
    private IdempotentStorage idempotentStorageCustom;

}